package com.itheima.createthreaddemo;

public class CreateThreadDemo2 {

    public static void main(String[] args) {
        // 创建线程任务类的对象，代表线程任务（不能直接用start）
        Runnable pt = new PrimeThread2();
        // 创建线程对象，把线程任务对象传给线程对象
        Thread t = new Thread(pt);
        t.start();

        new Thread(() -> {
            System.out.println(" PrimeThread3 run()");
            // 统计计算1-1000内的素数的时间
            long startTime = System.currentTimeMillis();
            for (int i = 2; i <= 100; i++) {
                boolean flag = true;
                for (int j = 2; j * j <= i; j++) {
                    if (i % j == 0) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    System.out.println("PrimeThread3的到的素数：" + i);
                }
            }
            long endTime = System.currentTimeMillis();
            System.out.println("PrimeThread 运行时长：" + (endTime - startTime) + "毫秒");
        }).start();

        // main线程调用
        getPrime();
    }

    public static void getPrime() {
        System.out.println(" getPrime()");
        // 统计计算1-10000内的素数的时间
        long startTime = System.currentTimeMillis();
        for (int i = 2; i <= 100; i++) {
            boolean flag = true;
            for (int j = 2; j * j <= i; j++) {
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                System.out.println("getPrime的到的素数：" + i);
            }
        }
        long endTime = System.currentTimeMillis();
        System.out.println("getPrime() 运行时长：" + (endTime - startTime) + "毫秒");
    }
}

// 创建线程方式二：实现Runnable接口, 重写run方法, 创建Thread对象，调用start方法
class PrimeThread2 implements Runnable {
    @Override
    public void run() {
        System.out.println(" PrimeThread2 run()");
        // 统计计算1-1000内的素数的时间
        long startTime = System.currentTimeMillis();
        for (int i = 2; i <= 100; i++) {
            boolean flag = true;
            for (int j = 2; j * j <= i; j++) {
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                System.out.println("PrimeThread的到的素数：" + i);
            }
        }
        long endTime = System.currentTimeMillis();
        System.out.println("PrimeThread 运行时长：" + (endTime - startTime) + "毫秒");
    }
}
